package com.dylan.redislimiting.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author admin
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface RateLimiting {
    //key
    String key() default "";

    //Key的前缀
    String prefix() default "";

    //给定的时间范围 单位(秒)
    int period();

    //一定时间内最多访问次数
    int count();

    //限流的类型(用户自定义key 或者 请求ip)
    LimitType limitType() default LimitType.CUSTOMER;
}
